{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notes:\n",
    " * run 13, evaluations for label S"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['/mnt/tess/astronet/checkpoints/extended_22_run_13/1/AstroCNNModel_extended_20210123_230247',\n",
       " '/mnt/tess/astronet/checkpoints/extended_22_run_13/2/AstroCNNModel_extended_20210123_233704',\n",
       " '/mnt/tess/astronet/checkpoints/extended_22_run_13/3/AstroCNNModel_extended_20210124_001135',\n",
       " '/mnt/tess/astronet/checkpoints/extended_22_run_13/4/AstroCNNModel_extended_20210124_004519',\n",
       " '/mnt/tess/astronet/checkpoints/extended_22_run_13/5/AstroCNNModel_extended_20210124_011920',\n",
       " '/mnt/tess/astronet/checkpoints/extended_22_run_13/6/AstroCNNModel_extended_20210124_015336',\n",
       " '/mnt/tess/astronet/checkpoints/extended_22_run_13/7/AstroCNNModel_extended_20210124_022808',\n",
       " '/mnt/tess/astronet/checkpoints/extended_22_run_13/8/AstroCNNModel_extended_20210124_030218',\n",
       " '/mnt/tess/astronet/checkpoints/extended_22_run_13/9/AstroCNNModel_extended_20210124_033541',\n",
       " '/mnt/tess/astronet/checkpoints/extended_22_run_13/10/AstroCNNModel_extended_20210124_040845']"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "\n",
    "chkpt_root = '/mnt/tess/astronet/checkpoints/extended_22_run_13'\n",
    "data_files = '/mnt/tess/astronet/tfrecords-22-val/*'\n",
    "tces_file = '/mnt/tess/astronet/tces-v5-val.csv'\n",
    "\n",
    "nruns = 10\n",
    "\n",
    "def load_ensemble(chkpt_root, nruns):\n",
    "    checkpts = []\n",
    "    for i in range(nruns):\n",
    "        parent = os.path.join(chkpt_root, str(i + 1))\n",
    "        if not os.path.exists(parent):\n",
    "            break\n",
    "        all_dirs = os.listdir(parent)\n",
    "        if not all_dirs:\n",
    "            break\n",
    "        d, = all_dirs\n",
    "        checkpts.append(os.path.join(parent, d))\n",
    "    return checkpts\n",
    "\n",
    "paths = load_ensemble(chkpt_root, nruns)\n",
    "paths"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running model 1\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "2231 records\n",
      "Running model 2\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "2231 records\n",
      "Running model 3\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "2231 records\n",
      "Running model 4\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "2231 records\n",
      "Running model 5\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "2231 records\n",
      "Running model 6\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "2231 records\n",
      "Running model 7\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "2231 records\n",
      "Running model 8\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "2231 records\n",
      "Running model 9\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "2231 records\n",
      "Running model 10\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "2231 records\n"
     ]
    }
   ],
   "source": [
    "import getpass\n",
    "import os\n",
    "from astronet import predict\n",
    "import tensorflow as tf\n",
    "\n",
    "\n",
    "def run_predictions(path):\n",
    "    predict.FLAGS = predict.parser.parse_args([\n",
    "      '--model_dir', path,\n",
    "      '--data_files', data_files,\n",
    "      '--output_file', '',\n",
    "    ])\n",
    "\n",
    "    return predict.predict()\n",
    "\n",
    "\n",
    "paths = load_ensemble(chkpt_root, nruns)\n",
    "ensemble_preds = []\n",
    "config = None\n",
    "for i, path in enumerate(paths):\n",
    "    print(f'Running model {i + 1}')\n",
    "    preds, config = run_predictions(path)\n",
    "    ensemble_preds.append(preds.set_index('tic_id'))\n",
    "    print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "labels = ['disp_E', 'disp_N', 'disp_J', 'disp_S', 'disp_B']\n",
    "\n",
    "lbl_col = 'disp_S'\n",
    "pred_col = 'disp_S_p'\n",
    "lbl_col_i = labels.index(lbl_col)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "agg_preds = {}\n",
    "\n",
    "for preds in ensemble_preds:\n",
    "    for tic_id in preds.index:\n",
    "        if tic_id not in agg_preds:\n",
    "            agg_preds[tic_id] = []\n",
    "\n",
    "        row = preds[preds.index == tic_id]\n",
    "        pred_v = row.values[0]\n",
    "        if len(row.values) > 1:\n",
    "            print(f'Warning: duplicate predictions for {tic_id}')\n",
    "        if pred_v[lbl_col_i] >= config.hparams.prediction_threshold:\n",
    "            agg_preds[tic_id].append(lbl_col)\n",
    "        else:\n",
    "            agg_preds[tic_id].append(preds.columns[np.argmax(pred_v)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "final_preds = []\n",
    "for tic_id in list(agg_preds.keys()):\n",
    "    counts = {l: 0 for l in labels}\n",
    "    for e in agg_preds[tic_id]:\n",
    "        counts[e] += 1\n",
    "    maxcount = max(counts.values())\n",
    "    counts.update({\n",
    "        'tic_id': tic_id,\n",
    "        'maxcount': maxcount,\n",
    "    })\n",
    "    final_preds.append(counts)\n",
    "    \n",
    "final_preds = pd.DataFrame(final_preds).set_index('tic_id')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "tce_table = pd.read_csv(tces_file, header=0).set_index('tic_id')\n",
    "tce_labels = tce_table[labels]\n",
    "\n",
    "pl = final_preds.join(tce_labels, on='tic_id', how='left', lsuffix='_p')\n",
    "\n",
    "pl.head()\n",
    "pd.set_option('display.max_columns', None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall: 0.7692307692307693\n",
      "Precision: 0.25\n"
     ]
    }
   ],
   "source": [
    "ppos = (pl[pred_col] > 0)\n",
    "pos = (pl[lbl_col] > 0)\n",
    "\n",
    "pneg = (pl[pred_col] == 0)\n",
    "neg = (pl[lbl_col] == 0)\n",
    "\n",
    "print('Recall:', len(pl[ppos & pos]) / len(pl[pos]))\n",
    "print('Precision:', len(pl[ppos & pos]) / len(pl[ppos]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "279322995\n",
      "293937699\n",
      "298647682\n"
     ]
    }
   ],
   "source": [
    "for i in pl[pos & pneg][[]].join(tce_table, on='tic_id', how='left').index:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>disp_E</th>\n",
       "      <th>disp_N</th>\n",
       "      <th>disp_J</th>\n",
       "      <th>disp_S</th>\n",
       "      <th>disp_B</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tic_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>298647682</th>\n",
       "      <td>0.188157</td>\n",
       "      <td>0.279261</td>\n",
       "      <td>0.689563</td>\n",
       "      <td>0.003927</td>\n",
       "      <td>0.007434</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298647682</th>\n",
       "      <td>0.107104</td>\n",
       "      <td>0.249111</td>\n",
       "      <td>0.850852</td>\n",
       "      <td>0.003037</td>\n",
       "      <td>0.001369</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298647682</th>\n",
       "      <td>0.046322</td>\n",
       "      <td>0.195792</td>\n",
       "      <td>0.923689</td>\n",
       "      <td>0.000922</td>\n",
       "      <td>0.001605</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298647682</th>\n",
       "      <td>0.877685</td>\n",
       "      <td>0.103976</td>\n",
       "      <td>0.089948</td>\n",
       "      <td>0.002771</td>\n",
       "      <td>0.002631</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298647682</th>\n",
       "      <td>0.661017</td>\n",
       "      <td>0.133313</td>\n",
       "      <td>0.363282</td>\n",
       "      <td>0.001145</td>\n",
       "      <td>0.001394</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298647682</th>\n",
       "      <td>0.174914</td>\n",
       "      <td>0.131865</td>\n",
       "      <td>0.788627</td>\n",
       "      <td>0.000606</td>\n",
       "      <td>0.000436</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298647682</th>\n",
       "      <td>0.437036</td>\n",
       "      <td>0.155515</td>\n",
       "      <td>0.546208</td>\n",
       "      <td>0.001257</td>\n",
       "      <td>0.001735</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298647682</th>\n",
       "      <td>0.284762</td>\n",
       "      <td>0.160080</td>\n",
       "      <td>0.701732</td>\n",
       "      <td>0.000456</td>\n",
       "      <td>0.001163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298647682</th>\n",
       "      <td>0.414789</td>\n",
       "      <td>0.143598</td>\n",
       "      <td>0.576070</td>\n",
       "      <td>0.000776</td>\n",
       "      <td>0.001271</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298647682</th>\n",
       "      <td>0.432359</td>\n",
       "      <td>0.152058</td>\n",
       "      <td>0.538921</td>\n",
       "      <td>0.001631</td>\n",
       "      <td>0.002364</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             disp_E    disp_N    disp_J    disp_S    disp_B\n",
       "tic_id                                                     \n",
       "298647682  0.188157  0.279261  0.689563  0.003927  0.007434\n",
       "298647682  0.107104  0.249111  0.850852  0.003037  0.001369\n",
       "298647682  0.046322  0.195792  0.923689  0.000922  0.001605\n",
       "298647682  0.877685  0.103976  0.089948  0.002771  0.002631\n",
       "298647682  0.661017  0.133313  0.363282  0.001145  0.001394\n",
       "298647682  0.174914  0.131865  0.788627  0.000606  0.000436\n",
       "298647682  0.437036  0.155515  0.546208  0.001257  0.001735\n",
       "298647682  0.284762  0.160080  0.701732  0.000456  0.001163\n",
       "298647682  0.414789  0.143598  0.576070  0.000776  0.001271\n",
       "298647682  0.432359  0.152058  0.538921  0.001631  0.002364"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def compare(ensemble_preds, filter):\n",
    "    result = ensemble_preds[0][filter]\n",
    "    for preds in ensemble_preds[1:]:\n",
    "        result = result.append(preds[filter])\n",
    "    return result\n",
    "\n",
    "compare(ensemble_preds, preds.index == 298647682)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>disp_E_p</th>\n",
       "      <th>disp_N_p</th>\n",
       "      <th>disp_J_p</th>\n",
       "      <th>disp_S_p</th>\n",
       "      <th>disp_B_p</th>\n",
       "      <th>maxcount</th>\n",
       "      <th>disp_E</th>\n",
       "      <th>disp_N</th>\n",
       "      <th>disp_J</th>\n",
       "      <th>disp_S</th>\n",
       "      <th>disp_B</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tic_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>279322995</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           disp_E_p  disp_N_p  disp_J_p  disp_S_p  disp_B_p  maxcount  disp_E  \\\n",
       "tic_id                                                                          \n",
       "279322995         0         0        10         0         0        10       0   \n",
       "\n",
       "           disp_N  disp_J  disp_S  disp_B  \n",
       "tic_id                                     \n",
       "279322995       0       0       1       0  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pl[pl.index == 279322995]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PR curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "tics = set(ensemble_preds[0].index.values)\n",
    "\n",
    "tic_index = {v: i for i, v in enumerate(tics)}\n",
    "\n",
    "pred_es = np.zeros([len(ensemble_preds), len(tic_index)])\n",
    "for i, preds in enumerate(ensemble_preds):\n",
    "    for row in preds.iterrows():\n",
    "        tic, pred_e = row[0], row[1][lbl_col_i]\n",
    "        pred_es[i][tic_index[tic]] = pred_e\n",
    "\n",
    "lbl_es = np.zeros([len(tic_index)], dtype=np.bool)\n",
    "for row in tce_labels.iterrows():\n",
    "    tic, lbl_e = row[0], row[1][lbl_col]\n",
    "    if tic in tic_index:\n",
    "        lbl_es[tic_index[tic]] = (lbl_e > 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_cond_pos = float(np.sum(lbl_es))\n",
    "\n",
    "def pr_at_th(th):\n",
    "    pred_pos = np.any(pred_es >= th, axis=0)\n",
    "    true_pos = pred_pos & lbl_es\n",
    "    num_pred_pos = int(np.sum(pred_pos))\n",
    "    num_true_pos = int(np.sum(true_pos))\n",
    "    if num_pred_pos == 0:\n",
    "        return 1.0, 0.0\n",
    "    return float(num_true_pos) / float(num_pred_pos), float(num_true_pos) / float(num_cond_pos)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.3359733836073681, max R: 1.0, max P: 1.0\n",
      "100% recall at: 1%, threshold: 0.0036614298821004425\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1200x740 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "\n",
    "ps, rs, ths = ([], [], [])\n",
    "th = np.max(pred_es)\n",
    "while th >= 0.0:\n",
    "    p, r = pr_at_th(th)\n",
    "    if p > 0:\n",
    "        ps.append(p)\n",
    "        rs.append(r)\n",
    "    else:\n",
    "        ps.append(1.0)\n",
    "        rs.append(0.0)\n",
    "    ths.append(th)\n",
    "    th -= 0.0005\n",
    "    \n",
    "from sklearn import metrics\n",
    "\n",
    "print(f'AUC: {metrics.auc(rs, ps)}, max R: {max(rs)}, max P: {max(ps)}')\n",
    "    \n",
    "i = len(rs) - 1\n",
    "while rs[i] == 1.0:\n",
    "    i -= 1\n",
    "i += 1\n",
    "print(f'100% recall at: {int(ps[i] * 100)}%, threshold: {ths[i]}')\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(6, 3.7), dpi=200)\n",
    "\n",
    "ax.spines['top'].set_color('#808080')\n",
    "ax.spines['right'].set_color('#808080')\n",
    "ax.spines['left'].set_color('#808080')\n",
    "ax.spines['bottom'].set_color('#808080')\n",
    "ax.tick_params(direction='in', color='#808080')\n",
    "\n",
    "plt.grid(color='#c0c0c0', linestyle='--', linewidth=0.5)\n",
    "\n",
    "plt.ylabel('Precision', fontweight='bold')\n",
    "plt.xlabel('Recall', fontweight='bold')\n",
    "\n",
    "plt.xlim((0.0, 1.0))\n",
    "plt.ylim((0.0, 1.0))\n",
    "\n",
    "_ = plt.plot(rs, ps)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
